home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / termsorc.lha / Extras / Source / gtlayout-source.lha / LTP_Storage.c < prev    next >
C/C++ Source or Header  |  1995-09-24  |  4KB  |  238 lines

  1. /*  GadTools layout toolkit
  2. **
  3. **  Copyright © 1993-1995 by Olaf `Olsen' Barthel
  4. **  Freely distributable.
  5. */
  6.  
  7. #include "gtlayout_global.h"
  8.  
  9. VOID __regargs
  10. LTP_GetStorage(ObjectNode *Node)
  11. {
  12.     if(Node -> Storage)
  13.     {
  14.         LONG    Number = 0;
  15.         STRPTR    String = NULL;
  16.  
  17.         switch(Node -> StorageType)
  18.         {
  19.             case STORAGE_BYTE:
  20.  
  21.                 Number = *(BYTE *)Node -> Storage;
  22.                 break;
  23.  
  24.             case STORAGE_UBYTE:
  25.  
  26.                 Number = *(UBYTE *)Node -> Storage;
  27.                 break;
  28.  
  29.             case STORAGE_WORD:
  30.  
  31.                 Number = *(WORD *)Node -> Storage;
  32.                 break;
  33.  
  34.             case STORAGE_UWORD:
  35.  
  36.                 Number = *(UWORD *)Node -> Storage;
  37.                 break;
  38.  
  39.             case STORAGE_LONG:
  40.  
  41.                 Number = *(LONG *)Node -> Storage;
  42.                 break;
  43.  
  44.             case STORAGE_ULONG:
  45.  
  46.                 Number = *(ULONG *)Node -> Storage;
  47.                 break;
  48.  
  49.             case STORAGE_STRPTR:
  50.  
  51.                 String = Node -> Storage;
  52.                 break;
  53.         }
  54.  
  55.         switch(Node -> Type)
  56.         {
  57.             case CHECKBOX_KIND:
  58.             case LISTVIEW_KIND:
  59.             case MX_KIND:
  60.             case CYCLE_KIND:
  61.             case PALETTE_KIND:
  62.             case SLIDER_KIND:
  63.             case SCROLLER_KIND:
  64. #if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
  65.             case POPUP_KIND:
  66. #endif
  67. #if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
  68.             case TAB_KIND:
  69. #endif
  70. #ifdef DO_GAUGE_KIND
  71.             case GAUGE_KIND:
  72. #endif
  73.  
  74. #ifdef DO_TAPEDECK_KIND
  75.             case TAPEDECK_KIND:
  76. #endif    /* DO_TAPEDECK_KIND */
  77.  
  78. #ifdef DO_FRACTION_KIND
  79.             case FRACTION_KIND:
  80. #endif
  81.                 Node -> Current = Number;
  82.                 break;
  83.  
  84.             case STRING_KIND:
  85. #ifdef DO_PASSWORD_KIND
  86.             case PASSWORD_KIND:
  87. #endif
  88.                 Node -> Special . String . String = String;
  89.                 break;
  90.  
  91.             case INTEGER_KIND:
  92.  
  93.                 Node -> Special . Integer . Number = Number;
  94.                 break;
  95. #ifdef DO_LEVEL_KIND
  96.             case LEVEL_KIND:
  97.  
  98.                 Node -> Special . Level . Level = Number;
  99.                 break;
  100. #endif    /* DO_LEVEL_KIND */
  101.         }
  102.     }
  103. }
  104.  
  105.  
  106. /*****************************************************************************/
  107.  
  108.  
  109. VOID __regargs
  110. LTP_PutStorage(ObjectNode *Node)
  111. {
  112.     if(Node -> Storage)
  113.     {
  114.         LONG    Number = 0;
  115.         STRPTR    String = NULL;
  116.  
  117.         switch(Node -> Type)
  118.         {
  119.             case CHECKBOX_KIND:
  120.             case LISTVIEW_KIND:
  121.             case MX_KIND:
  122.             case CYCLE_KIND:
  123.             case PALETTE_KIND:
  124.             case SLIDER_KIND:
  125.             case SCROLLER_KIND:
  126. #if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
  127.             case POPUP_KIND:
  128. #endif
  129. #if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
  130.             case TAB_KIND:
  131. #endif
  132. #ifdef DO_GAUGE_KIND
  133.             case GAUGE_KIND:
  134. #endif
  135.  
  136. #ifdef DO_TAPEDECK_KIND
  137.             case TAPEDECK_KIND:
  138. #endif    /* DO_TAPEDECK_KIND */
  139.                 Number = Node -> Current;
  140.                 break;
  141.  
  142. #ifdef DO_FRACTION_KIND
  143.             case FRACTION_KIND:
  144.  
  145.                 if(Node -> Host)
  146.                     Number = (LONG)LT_String2Fixed(((struct StringInfo *)Node -> Host -> SpecialInfo) -> Buffer);
  147.                 else
  148.                     Number = Node -> Current;
  149.  
  150.                 break;
  151. #endif
  152.  
  153. #ifdef DO_PASSWORD_KIND
  154.             case PASSWORD_KIND:
  155.  
  156.                 String = Node -> Special . String . Original;
  157.                 break;
  158. #endif
  159.  
  160.             case STRING_KIND:
  161.  
  162.                 if(Node -> Host)
  163.                     String = ((struct StringInfo *)Node -> Host -> SpecialInfo) -> Buffer;
  164.                 else
  165.                     String = Node -> Special . String . String;
  166.  
  167.                 break;
  168.  
  169.             case INTEGER_KIND:
  170.  
  171.                 if(Node -> Host)
  172.                     Number = ((struct StringInfo *)Node -> Host -> SpecialInfo) -> LongInt;
  173.                 else
  174.                     Number = Node -> Special . Integer . Number;
  175.  
  176.                 break;
  177. #ifdef DO_LEVEL_KIND
  178.             case LEVEL_KIND:
  179.  
  180.                 Number = Node -> Special . Level . Level;
  181.                 break;
  182. #endif    /* DO_LEVEL_KIND */
  183.         }
  184.  
  185.         switch(Node -> StorageType)
  186.         {
  187.             case STORAGE_BYTE:
  188.  
  189.                 if(!String)
  190.                     *(BYTE *)Node -> Storage = (BYTE)Number;
  191.  
  192.                 break;
  193.  
  194.             case STORAGE_UBYTE:
  195.  
  196.                 if(!String)
  197.                     *(UBYTE *)Node -> Storage = (UBYTE)Number;
  198.  
  199.                 break;
  200.  
  201.             case STORAGE_WORD:
  202.  
  203.                 if(!String)
  204.                     *(WORD *)Node -> Storage = (WORD)Number;
  205.  
  206.                 break;
  207.  
  208.             case STORAGE_UWORD:
  209.  
  210.                 if(!String)
  211.                     *(UWORD *)Node -> Storage = (UWORD)Number;
  212.  
  213.                 break;
  214.  
  215.             case STORAGE_LONG:
  216.  
  217.                 if(!String)
  218.                     *(LONG *)Node -> Storage = (LONG)Number;
  219.  
  220.                 break;
  221.  
  222.             case STORAGE_ULONG:
  223.  
  224.                 if(!String)
  225.                     *(ULONG *)Node -> Storage = (ULONG)Number;
  226.  
  227.                 break;
  228.  
  229.             case STORAGE_STRPTR:
  230.  
  231.                 if(String)
  232.                     strcpy(Node -> Storage,String);
  233.  
  234.                 break;
  235.         }
  236.     }
  237. }
  238.